<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Change Log : DataMapper User Guide</title>

<style type='text/css' media='all'>@import url('../css/userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../css/userguide.css' />

<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />

</head>

<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"></div></div>
<div id="nav2"><a name="top">&nbsp;</a><a id="nav_toggle" href="#"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>DataMapper</h1></td>
<td id="breadcrumb_right"><a href="toc.html">Table of Contents Page</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->

<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://stensi.com/">DataMapper Home</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
Change Log
</td>
</tr>

</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">


<h1>Change Log</h1>


<h2>Version 1.6.0</h2>
<p>Release Date: December 10, 2008</p>
<ul>
	<li>
		<strong>Core Changes</strong>
		<ul>
			<li>Added a <dfn>query()</dfn> method.</li>
			<li>Renamed private <dfn>_related()</dfn> method to <dfn>_get_relation()</dfn>, then added a different private <dfn>_related()</dfn> method.</li>
			<li>
				Added related query methods for more advanced queries via the <dfn>_related()</dfn> method. These are:
				<ul>
					<li><dfn>where_related()</dfn></li>
					<li><dfn>or_where_related()</dfn></li>
					<li><dfn>where_in_related()</dfn></li>
					<li><dfn>or_where_in_related()</dfn></li>
					<li><dfn>where_not_in_related()</dfn></li>
					<li><dfn>or_where_not_in_related()</dfn></li>
					<li><dfn>like_related()</dfn></li>
					<li><dfn>not_like_related()</dfn></li>
					<li><dfn>or_like_related()</dfn></li>
					<li><dfn>or_not_like_related()</dfn></li>
					<li><dfn>having_related()</dfn></li>
					<li><dfn>or_having_related()</dfn></li>
				</ul>
			</li>
		</ul>
	</li>
	<li>
		<strong>Improvements</strong>
		<ul>
			<li>Replaced <dfn>array_push()</dfn> with <kbd>${array}[]</kbd> to remove the overhead of calling a function.</li>
		</ul>
	</li>
	<li>
		<strong>Other Changes</strong>
		<ul>
			<li>Added a <a href="query.html">Query</a> page to the user guide.</li>
			<li>Added a <a href="get.html#advanced">Get (Advanced)</a> section to the <a href="get.html">Get</a> page of the user guide.</li>
			<li>Added a <a href="getby.html#advanced">Get By (Advanced)</a> section to the <a href="getby.html">Get By</a> page of the user guide.</li>
			<li>Updated a number of pages in the user guide to reflect the latest version.</li>
		</ul>
	</li>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed so CodeIgniter Form Validation library is only loaded if not already loaded.</li>
		</ul>
	</li>
</ul>



<h2>Version 1.5.4</h2>
<p>Release Date: December 6, 2008</p>
<ul>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed the refreshing of stored values so <dfn>save()</dfn> functions correctly.</li>
			<li>Fixed created and updated field checks to use <dfn>in_array()</dfn> instead of <dfn>array_key_exists()</dfn>.</li>
		</ul>
	</li>
	<li>
		<strong>Improvements</strong>
		<ul>
			<li>Moved check to see if only the updated field changed to outside the foreach.</li>
			<li>Changed to load the Form Validation library for easier reuse.</li>
		</ul>
	</li>
</ul>

<h2>Version 1.5.3</h2>
<p>Release Date: December 5, 2008</p>
<ul>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed <kbd>$parent</kbd> for self referencing objects.</li>
			<li>Changed <kbd>$fields</kbd> from an associative array back into a normal array containing only field names.</li>
		</ul>
	</li>
</ul>

<h2>Version 1.5.2</h2>
<p>Release Date: December 4, 2008</p>
<ul>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed config file settings to be correctly assigned by reference.</li>
			<li>Fixed common model settings to be correctly assigned by reference.</li>
			<li>Changed <dfn>count()</dfn> to internally use the slightly faster <dfn>count_all_results()</dfn> method.</li>
			<li>Changed <dfn>_related()</dfn> to specify the relationship tables on the join by id's.</li>
		</ul>
	</li>
</ul>

<h2>Version 1.5.1</h2>
<p>Release Date: December 4, 2008</p>
<ul>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Reverted <kbd>$parent</kbd> from an object reference back into an array to fix memory issue.</li>
			<li>Fixed constructor to not override model specific settings with config file settings.</li>
			<li>Fixed <dfn>_to_object()</dfn> to populate the <kbd>$stored</kbd> variable.</li>
		</ul>
	</li>
</ul>

<h2>Version 1.5.0</h2>
<p>Release Date: December 3, 2008</p>
<ul>
	<li>
		<strong>Core Changes</strong>
		<ul>
			<li><a href="http://codeigniter.com/user_guide/installation/downloads.html">CodeIgniter 1.7.0</a> is now required due to the new <a href="http://codeigniter.com/user_guide/libraries/form_validation.html">Form Validation</a> library.</li>
			<li>Improved <a href="save.html">save()</a> method to allow saving of object data and relationship data at the same time.</li>
			<li>Changed the <var>all</var> property to allow access by id ($object->all[$id]).</li>
			<li><kbd>Replaced</kbd> the <var>auto_populate_related</var> setting with <var>auto_populate_has_many</var> and <var>auto_populate_has_one</var> settings.</li>
			<li><kbd>Replaced</kbd> the <kbd>$related</kbd> variable with a <kbd>$parent</kbd> variable that is a reference to the parent object.</li>
			<li><kbd>Removed</kbd> the private <dfn>_changed()</dfn>, <dfn>_changed_existing()</dfn> and <dfn>_changed_non_existing()</dfn> methods.</li>
			<li>
				Added new main methods, including a dynamic <dfn>get_by_</dfn><var>{field}</var><dfn>()</dfn> method. These are:
				<ul>
					<li><dfn>get_by_</dfn><var>{field}</var><dfn>()</dfn></li>
					<li><dfn>get_clone()</dfn></li>
					<li><dfn>get_copy()</dfn></li>
					<li><dfn>clear()</dfn></li>
					<li><dfn>count()</dfn></li>
					<li><dfn>exists()</dfn></li>
				</ul>
			</li>
		</ul>
	</li>
	<li>
		<strong>Improvements</strong>
		<ul>
			<li>Many improvements are due to the very useful contributions by <a href="http://codeigniter.com/forums/member/69480/">commandercool</a> and <a href="http://codeigniter.com/forums/member/76295/">OverZealous.com</a>.</li>
			<li>General overhaul and fine tuning to improve performance.</li>
			<li>Removed all unnecessary code, such as properties that are never accessed, unneeded <dfn>strtolower()</dfn> calls, etc.</li>
			<li>Reworked testing of changed values when validating to remove the need for any database calls.</li>
			<li>Changed the constructor to use the much faster <dfn>field_data()</dfn> method instead of the <dfn>list_fields()</dfn> method.</li>
			<li>Added static variables for common data storage, meaning initialisation data is prepared only once per model instead of per instance.</li>
		</ul>
	</li>
	<li>
		<strong>Validation</strong>
		<ul>
			<li>Updated <dfn>validate()</dfn> to use the new <a href="http://codeigniter.com/user_guide/libraries/form_validation.html">Form Validation</a> library.</li>
			<li>
				Added new validation rules. These are:
				<ul>
					<li><dfn>min_date</dfn></li>
					<li><dfn>max_date</dfn></li>
					<li><dfn>min_size</dfn></li>
					<li><dfn>max_size</dfn></li>
					<li><dfn>valid_date</dfn></li>
					<li><dfn>valid_date_group</dfn></li>
				</ul>
			</li>
			<li>
				Added validation for relationships. The related validation rules are:</li>
				<ul>
					<li><dfn>required</dfn></li>
					<li><dfn>min_size</dfn></li>
					<li><dfn>max_size</dfn></li>
				</ul>
			</li>
		</ul>
	</li>
	<li>
		<strong>Examples</strong>
		<ul>
			<li>Recoded the self referencing examples to better demonstrate how you need to override the <dfn>get()</dfn> and <dfn>count()</dfn> methods to get the correct behaviour. Also included an example of using relationship validation rules.</li>
		</ul>
	</li>
	<li>
		<strong>Other Changes</strong>
		<ul>
			<li>Reviewed code so it meets the CodeIgniter <a href="http://codeigniter.com/user_guide/general/styleguide.html">PHP Style Guide</a>.</li>
			<li>Added a <a href="getby.html">Get By</a> page to the user guide.</li>
			<li>Added a <a href="getclone.html">Get Clone</a> page to the user guide.</li>
			<li>Added a <a href="getcopy.html">Get Copy</a> page to the user guide.</li>
			<li>Added a <a href="clear.html">Clear</a> page to the user guide.</li>
			<li>Added a <a href="count.html">Count</a> page to the user guide.</li>
			<li>Added a <a href="exists.html">Exists</a> page to the user guide.</li>
			<li>Updated a number of pages in the user guide to reflect the latest version.</li>
		</ul>
	</li>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed the Automated Timestamp to save correctly when doing UPDATE queries.</li>
			<li>Fixed several very rare bugs with thanks to <a href="http://codeigniter.com/forums/member/76295/">OverZealous.com</a>.</li>
		</ul>
	</li>
</ul>


<h2>Version 1.4.5</h2>
<p>Release Date: October 15, 2008</p>
<ul>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed <dfn>save()</dfn> to update changed non-validated fields when doing UPDATE queries.</li>
		</ul>
	</li>
</ul>

<h2>Version 1.4.4</h2>
<p>Release Date: October 13, 2008</p>
<ul>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed <dfn>save()</dfn> to not attempt to update if there are no changed fields when doing UPDATE queries.</li>
		</ul>
	</li>
</ul>

<h2>Version 1.4.3</h2>
<p>Release Date: October 13, 2008</p>
<ul>
	<li>
		<strong>Improvements</strong>
		<ul>
			<li>Changed <dfn>save()</dfn> to only insert populated fields when doing INSERT queries (NULL or empty string values will default to those in the Database).</li>
			<li>Changed <dfn>_assign_libraries()</dfn> to assign only the required libraries.</li>
		</ul>
	</li>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed <dfn>validate()</dfn> so fields that are not required are only validated if they contain a value.</li>
		</ul>
	</li>
</ul>

<h2>Version 1.4.2</h2>
<p>Release Date: October 12, 2008</p>
<ul>
	<li>
		<strong>Improvements</strong>
		<ul>
			<li>Changed <dfn>save()</dfn> to only update changed fields when doing UPDATE queries.</li>
			<li>Changed <dfn>autoload()</dfn> so it will not attempt to autoload CI_ or MY_ prefixed classes.</li>
		</ul>
	</li>
</ul>

<h2>Version 1.4.1</h2>
<p>Release Date: October 11, 2008</p>
<ul>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed autoloading of configuration settings to be explicit.</li>
		</ul>
	</li>
</ul>


<h2>Version 1.4.0</h2>
<p>Release Date: October 11, 2008</p>
<ul>
	<li>
		<strong>Core Changes</strong>
		<ul>
			<li>Converted DataMapper into a Library (how you use it remains the same but how you <a href="installation.html">install</a> it is different).</li>
			<li>Added a config file for the ability to autoload global configuration settings.</li>
			<li>Changed use of <kbd>$has_many</kbd> and <kbd>$has_one</kbd> to require just the model names (no longer associative arrays that require the table as well).</li>
			<li>Changed the way related model names and table tables are internally determined to ensure they're correct.</li>
			<li>
				Added methods for <a href="transactions.html">Transactions</a>, including the ability to automate the transaction handling. These are:
				<ul>
					<li><dfn>trans_off()</dfn></li>
					<li><dfn>trans_strict()</dfn></li>
					<li><dfn>trans_start()</dfn></li>
					<li><dfn>trans_complete()</dfn></li>
					<li><dfn>trans_begin()</dfn></li>
					<li><dfn>trans_status()</dfn></li>
					<li><dfn>trans_commit()</dfn></li>
					<li><dfn>trans_rollback()</dfn></li>
					<li><dfn>_auto_trans_begin()</dfn></li>
					<li><dfn>_auto_trans_complete()</dfn></li>
				</ul>
			</li>
		</ul>
	</li>
	<li>
		<strong>Automated Timestamps</strong>
		<ul>
			<li>Added ability to set whether automated timestamps are local time or GMT/UTC.</li>
			<li>Added ability to set whether automated timestamps are 'DateTime' or 'Unix Timestamp'.</li>
		</ul>
	</li>
	<li>
		<strong>Other Changes</strong>
		<ul>
			<li>Reviewed code so it meets the <a href="http://expressionengine.com/docs/development/guidelines/">EllisLab Development Guidelines</a>.</li>
			<li>Added a <a href="config.html">Configuration</a> page to the user guide.</li>
			<li>Added a <a href="transactions.html">Transactions</a> page to the user guide.</li>
			<li>Updated a number of pages in the user guide to reflect the latest version.</li>
		</ul>
	</li>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed <dfn>save()</dfn> and <dfn>delete()</dfn> to return TRUE if the save or delete of a relationship is successful.</li>
			<li>Fixed <dfn>save()</dfn> to use <dfn>insert_id()</dfn> to get the ID after an insert, rather than doing a <dfn>get()</dfn>.</li>
		</ul>
	</li>
</ul>

<h2>Version 1.3.4</h2>
<p>Release Date: October 8, 2008</p>
<ul>
	<li>
		<strong>Settings</strong>
		<ul>
			<li>Added ability to use table prefixes, including the ability to give joining tables a different prefix.</li>
		</ul>
	</li>
	<li>
		<strong>Auto-load</strong>
		<ul>
			<li>Replaced <dfn>__autoload()</dfn> with <dfn>spl_autoload_register()</dfn>, moving the autoload code into the DataMapper class.</li>
			<li>Improved so it performs a recursive search of the models directory, if the class being auto-loaded is not found in the models directory.</li>
		</ul>
	</li>
	<li>
		<strong>Validation</strong>
		<ul>
			<li>Added error messages to the language file for the <dfn>_unique_pair()</dfn> and <dfn>_valid_match()</dfn> pre-processing rules.</li>
			<li>Improved so array parameters can be used in error messages (such as with <dfn>_valid_match()</dfn>).</li>
		</ul>
	</li>
	<li>
		<strong>Other Changes</strong>
		<ul>
			<li>Added a <a href="prefix.html">Setting up Table Prefixes</a> page to the user guide.</li>
			<li>Added that there is a requirement to auto-load the Database library to the <a href="installation.html">Installation Instructions</a> page in the user guide.</li>
			<li>Updated a number of pages in the user guide to reflect the latest version.</li>
		</ul>
	<li>
</ul>

<h2>Version 1.3.3</h2>
<p>Release Date: October 3, 2008</p>
<ul>
	<li>
		<strong>Validation</strong>
		<ul>
			<li>Added <dfn>_unique_pair()</dfn> pre-processing rule (checks if the value of a property, paired with another, is unique).</li>
			<li>Added <dfn>_valid_match()</dfn> pre-processing rule (checks whether the field value matches one of the specified array values).</li>
		</ul>
	</li>
	<li>
		<strong>Other Changes</strong>
		<ul>
			<li>Updated a number of pages in the user guide to reflect the latest version.</li>
		</ul>
	<li>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed <dfn>_prep_url()</dfn>, <dfn>_strip_image_tags()</dfn>, <dfn>_xss_clean()</dfn> and <dfn>_encode_php_tags()</dfn> to work correctly.</li>
		</ul>
	</li>
</ul>

<h2>Version 1.3.2</h2>
<p>Release Date: October 2, 2008</p>
<ul>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed <dfn>_to_array()</dfn> so it returns all properties (including zero, NULL and empty strings) except when getting by objects properties (<kbd>$object</kbd><var>-></var><dfn>validate()</dfn><var>-></var><dfn>get()</dfn>).</li>
			<li>Fixed <dfn>_to_object()</dfn> so it returns all properties (including zero, NULL and empty strings).</li>
			<li>Fixed error messages using a field name as the parameter, to use the label instead (such as in the <strong>matches</strong> rule).</li>
		</ul>
	</li>
</ul>

<h2>Version 1.3.1</h2>
<p>Release Date: October 2, 2008</p>
<ul>
	<li>
		<strong>Examples</strong>
		<ul>
			<li>Added a complete example of a DataMapper model with self referencing relationships, along with some useful code gems.</li>
		</ul>
	</li>
	<li>
		<strong>Other Changes</strong>
		<ul>
			<li>Updated a number of pages in the user guide to reflect the latest version.</li>
		</ul>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed so self referencing relationships are possible (try the <a href="examples.html">Usage Examples</a> to see it in action).</li>
		</ul>
	</li>
</ul>

<h2>Version 1.3.0</h2>
<p>Release Date: September 29, 2008</p>
<ul>
	<li>
		<strong>Related Objects</strong>
		<ul>
			<li>Auto Population of related objects is now <kbd>OFF</kbd> by default so you can do it manually with a more defined related query (read <a href="settingrelations.html">Setting Up Relationships</a> to see how to turn Auto Populate back on, and why it is now off by default).</li>
			<li>Reworked related objects so you can populate them in the same way as your normal objects, by building up your queries using the <dfn>where()</dfn>, <dfn>like()</dfn> and so on methods, before calling the <dfn>get()</dfn> method.</li>
		</ul>
	</li>
	<li>
		<strong>Validation</strong>
		<ul>
			<li>Added ability to label fields for nicer error messages.</li>
			<li>Added ability to validate non-Database Table fields (these fields still need to pass validation if you're updating a record, read <a href="validation.html">Validation</a> for more information).</li>
		</ul>
	</li>
	<li>
		<strong>Other Changes</strong>
		<ul>
			<li>Fixed errors in the example code of the <a href="gettingstarted.html">Getting Started</a> page in the user guide.</li>
			<li>Updated a number of pages in the user guide to reflect the latest version.</li>
		</ul>
	</li>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Fixed <dfn>error_message()</dfn> method so it uses the <var>$error_prefix</var> and <var>$error_suffix</var> correctly.</li>
		</ul>
	</li>
</ul>

<h2>Version 1.2.1</h2>
<p>Release Date: September 24, 2008</p>
<ul>
	<li>
		<strong>Validation</strong>
		<ul>
			<li>Added a language file for use with the error messages of DataMapper-only validation rules.</li>
		</ul>
	</li>
	<li>
		<strong>Bug Fixes</strong>
		<ul>
			<li>Removed <var>$this->valid</var> check from <dfn>get()</dfn> method so "Getting by Object Properties" works correctly.</li>
		</ul>
	</li>
</ul>

<h2>Version 1.2</h2>
<p>Release Date: September 17, 2008</p>
<ul>
	<li>
		<strong>Core Changes</strong>
		<ul>
			<li>Added a <dfn>get()</dfn> method as the main method for retrieving data.</li>
			<li>
				Added all relevant Active Record methods for comprehensive data retrieval capabilities, complete with method chaining. These are:
				<ul>
					<li><dfn>select()</dfn></li>
					<li><dfn>select_max()</dfn></li>
					<li><dfn>select_min()</dfn></li>
					<li><dfn>select_avg()</dfn></li>
					<li><dfn>select_sum()</dfn></li>
					<li><dfn>distinct()</dfn></li>
					<li><dfn>get_where()</dfn></li>
					<li><dfn>where()</dfn></li>
					<li><dfn>or_where()</dfn></li>
					<li><dfn>where_in()</dfn></li>
					<li><dfn>or_where_in()</dfn></li>
					<li><dfn>where_not_in()</dfn></li>
					<li><dfn>or_where_not_in()</dfn></li>
					<li><dfn>like()</dfn></li>
					<li><dfn>not_like()</dfn></li>
					<li><dfn>or_like()</dfn></li>
					<li><dfn>or_not_like()</dfn></li>
					<li><dfn>group_by()</dfn></li>
					<li><dfn>having()</dfn></li>
					<li><dfn>or_having()</dfn></li>
					<li><dfn>order_by()</dfn></li>
					<li><dfn>limit()</dfn></li>
					<li><dfn>offset()</dfn></li>
					<li><dfn>start_cache()</dfn></li>
					<li><dfn>stop_cache()</dfn></li>
					<li><dfn>flush_cache()</dfn></li>
				</ul>
			</li>
			<li>DataMapper constructor no longer accepts any parameters.</li>
		</ul>
	</li>
	<li>
		<strong>Validation</strong>
		<ul>
			<li><var>$error_prefix</var> and <var>$error_suffix</var> variables added for formatting individual errors.</li>
			<li><var>$object->error->message</var> added as a single string containing all errors.</li>
			<li><dfn>_alpha_dash_dot(</dfn><var>$field</var><dfn>)</dfn> function added.</li>
			<li><dfn>_alpha_slash_dot(</dfn><var>$field</var><dfn>)</dfn> function added.</li>
			<li><dfn>error_message(</dfn><var>$field</var><dfn>, </dfn><var>$error</var><dfn>)</dfn> function added.</li>
		</ul>
	</li>
	<li>
		<strong>Automated Timestamps</strong>
		<ul>
			<li><var>$created_field</var> and <var>$updated_field</var> variables added for naming created and updated fields for automated 'DateTime' timestamp management.</li>
		</ul>
	</li>
	<li>
		<strong>Other Changes</strong>
		<ul>
			<li><kbd>Removed</kbd> the <dfn>find()</dfn> method.</li>
			<li>Added a <a href="get.html">Get</a> page to the user guide.</li>
			<li>Added a <a href="timestamp.html">Automated Timestamps</a> page to the user guide.</li>
			<li>Renamed the To Do List into the <a href="roadmap.html">Road Map</a> page in the user guide.</li>
			<li>Updated a number of pages in the user guide to reflect the latest version.</li>
		</ul>
	</li>
</ul>


<h2>Version Beta 1.0</h2>
<p>Release Date: September 7, 2008</p>

<p>First publicly released version.</p>


</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="license.html">License Agreement</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Next Topic:&nbsp;&nbsp;<a href="roadmap.html">Road Map</a>
</p>
<p><a href="http://stensi.com">DataMapper</a> &nbsp;&middot;&nbsp; Copyright &#169; 2008 &nbsp;&middot;&nbsp; <a href="http://stensi.com/">Simon Stenhouse</a></p>
<p><a href="http://codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006-2008 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
</div>

<script type="text/javascript" src="../js/mootools.js"></script>
<script type="text/javascript" src="../js/menu.js"></script>
<script type="text/javascript">
<!--
	window.addEvent('domready', function() {

		// Create Menu
		var menu = new Menu({
			basepath: '../',
			pagepath: ''
		});

	});	
//-->
</script>
</body>
</html>